home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Backup, Restoration & File Management / SyncBack SE 5.1 / SyncBackSE_Setup.exe / {app} / MapNextAvailableDriveLetter.vbs < prev    next >
Text File  |  2007-11-15  |  2KB  |  61 lines

  1.  
  2. ' Subroutines to map next available drive letter to UNC path (create network drive)
  3. ' and UnMap it again after temporary use
  4.  
  5. ' testing code below can be removed except recommend keep the Dim statement 
  6. ' as a "reminder" it is being used as a Public variable (sort of), not only
  7. ' to keep track of the drive letter between Subs but also for use in main logic (!)
  8.  
  9. ' the Wscript.Echo commands used purely for monitoring progress can be removed, but suggest
  10. ' keep the "can't find a letter" in error-trap at end of MapNextAvailableDriveLetter sub
  11.  
  12. ' Written 13 Nov 2007 by Dave Wilkins
  13.  
  14. Dim MappedDriveLetter 
  15.  
  16. MapNextAvailableDriveLetter "\\DWHOME\C$" ' substitute your own UNC path for testing
  17.  
  18. UnMapTempNetDrive
  19.  
  20.  
  21. '= = = = = = = = = = END OF MAIN  LOGIC / START OF SUBS & FUNCTIONS = = = = = = =
  22.  
  23.  
  24. Sub MapNextAvailableDriveLetter (UNCpath) ' OR (UNCpath, Uname, Upwd)
  25.  
  26.     Set objDict = CreateObject("Scripting.Dictionary")
  27.     Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
  28.     Set colDisks = objWMI.ExecQuery("Select * from Win32_LogicalDisk")
  29.  
  30.     For Each objDisk in colDisks
  31.         objDict.Add objDisk.DeviceID, objDisk.DeviceID
  32.     Next
  33.  
  34.     For d = 67 To 90 ' C to Z
  35.         strDrive = Chr(d) & ":"
  36.         If objDict.Exists(strDrive) Then
  37.             '    do nothing
  38.             Else
  39.             Wscript.Echo "Drive " & strDrive & " is available - mapping..."
  40.             Set TempNet = WScript.CreateObject("WScript.Network")
  41.             TempNet.MapNetworkDrive strDrive, UNCpath, False ' OR, plus, Uname, Upwd, if used
  42.             MappedDriveLetter = strDrive
  43.             Wscript.Echo UNCpath & " successfully mapped to " & MappedDriveLetter
  44.             Exit Sub
  45.             End If
  46.     Next
  47.     Wscript.Echo "There are no available drive letters on this computer": Wscript.Quit(1)
  48.  
  49. End Sub
  50.  
  51. '- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  52.  
  53. Sub UnMapTempNetDrive
  54.  
  55.     Set TempNet = WScript.CreateObject("WScript.Network")
  56.     TempNet.RemoveNetworkDrive MappedDriveLetter
  57.     Wscript.echo "Temporary network drive " & MappedDriveLetter & " successfully disconnected"
  58.     Set TempNet = Nothing
  59.  
  60. End Sub
  61.